package com.demo.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.demo.pojo.entity.Notice;

import java.util.List;
import java.util.Map;

/**
 * 通知服务
 */
public interface NoticeService {
    
    // ==================== 通知管理 ====================
    
    /**
     * 获取通知列表（分页）
     */
    IPage<Notice> getNoticeList(String publisherType, Long publisherId, 
                                String noticeType, String semester, 
                                Integer status, Integer page, Integer pageSize);
    
    /**
     * 创建通知
     */
    Long createNotice(Notice notice);
    
    /**
     * 更新通知
     */
    boolean updateNotice(Notice notice);
    
    /**
     * 删除通知
     */
    boolean deleteNotice(Long noticeId);
    
    // ==================== 辅助方法 ====================
    
    /**
     * 获取班级列表
     */
    List<Map<String, Object>> getClazzList();
    
    /**
     * 获取学生列表
     */
    List<Map<String, Object>> getStudentList();
    
    /**
     * 获取教师教授的班级列表
     */
    List<Map<String, Object>> getTeacherClasses(Long teacherId);
    
    // ==================== 学生接口 ====================
    
    /**
     * 学生查看通知列表（含已读状态）
     */
    List<Map<String, Object>> getStudentNotices(Long studentId, String semester);
    
    /**
     * 标记通知为已读
     */
    boolean markNoticeRead(Long studentId, Long noticeId);
    
    // ==================== 兼容旧接口 ====================
    
    /**
     * @deprecated 使用 getStudentNotices 替代
     */
    @Deprecated
    List<Map<String, Object>> listStudentNotices(Long studentId, String semester);

    /**
     * @deprecated 使用 markNoticeRead 替代
     */
    @Deprecated
    boolean markRead(Long studentId, Long noticeId);
}


